#!/bin/bash
# desc:
#     请求功能类
# author:
#     dockerlin@163.com
# 

#
# 检查该功能类依赖函数，所有依赖都检查
#
function request_cxl(){
    logger_debug "request_cxl checking"
    return 0
}

#
# 发送请求
# $1 url ： 访问地址，https://127.0.0.1/Api/bssHttp
# $2 data： 数组形式，类似 Operate=modifymaxmember&Number=02588888888&MaxMember=33
# $3 request method : 
#       post get put delete 缺省 post
# $4 request content-type ： 
#       form             application/x-www-form-urlencoded
#       upload           multipart/form-data （上传文件）
#       json             application/json
#       xml              text/xml
#       unknown          application/octet-stream（未知类型上传）
# $5 response type:
#       json             (缺省)
#       xml
#       html
#       file              下载文件
# $6 response file name
#
function cxlib_sendRequest(){
    logger_debug "访问地址:$1"
    logger_debug "访问数据:$2"
    
    if [ -z "$1" ] ; then return 1; fi
    if [ -z "$2" ] ; then return 1; fi
    method='POST'
    if [ -n "$3" ]; then method="$3"; fi
    logger_debug "访问方法:$method"
    contenType="form"
    if [ -n "$4" ]; then contenType="$4"; fi
    logger_debug "访问类型:$contenType"
    responsefile="json"
    if [ -n "$5" ]; then responsefile="$5"; fi
    # 处理上传数据
    case "$contenType" in
        form)
            content_type_="application/x-www-form-urlencoded"
            # 不用转换直接提交
            ;;
        upload)
            content_type_="multipart/form-data"
            # 将参数转换为数组，使用curl -F来提交参数
            ;;
        json)
            content_type_="application/json"
            # 不用转换，参数应该类似于 @jsonfile
            ;;
        xml)
            content_type_="text/xml; charset=utf-8"
            # 不用转换，参数应该类似于 @xmlfile
            ;;
        *)
            content_type_="application/octet-stream"
            ;;
    esac
    logger_debug "访问content-type:$content_type_"
    curl -ks -H "Content-Type:$content_type_" -X $method -d '"$2"' -o "${responsefile}" $1
    logger_debug "返回数据:$responseStr"
    unset content_type_ method contenType responsefile
    return 0
}